<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>JSType (Closure Compiler)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="JSType (Closure Compiler)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?com/google/javascript/rhino/jstype/JSType.html" target="_top">Frames</a></li>
<li><a href="JSType.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.google.javascript.rhino.jstype</div>
<h2 title="Class JSType" class="title">Class JSType</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>com.google.javascript.rhino.jstype.JSType</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../com/google/javascript/rhino/jstype/AllType.html" title="class in com.google.javascript.rhino.jstype">AllType</a>, <a href="../../../../../com/google/javascript/rhino/jstype/BooleanType.html" title="class in com.google.javascript.rhino.jstype">BooleanType</a>, <a href="../../../../../com/google/javascript/rhino/jstype/NullType.html" title="class in com.google.javascript.rhino.jstype">NullType</a>, <a href="../../../../../com/google/javascript/rhino/jstype/NumberType.html" title="class in com.google.javascript.rhino.jstype">NumberType</a>, <a href="../../../../../com/google/javascript/rhino/jstype/ObjectType.html" title="class in com.google.javascript.rhino.jstype">ObjectType</a>, <a href="../../../../../com/google/javascript/rhino/jstype/StringType.html" title="class in com.google.javascript.rhino.jstype">StringType</a>, <a href="../../../../../com/google/javascript/rhino/jstype/UnionType.html" title="class in com.google.javascript.rhino.jstype">UnionType</a>, <a href="../../../../../com/google/javascript/rhino/jstype/VoidType.html" title="class in com.google.javascript.rhino.jstype">VoidType</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="strong">JSType</span>
extends java.lang.Object
implements java.io.Serializable</pre>
<div class="block">Represents JavaScript value types.<p>

 Types are split into two separate families: value types and object types.

 A special <a href="../../../../../com/google/javascript/rhino/jstype/UnknownType.html" title="class in com.google.javascript.rhino.jstype"><code>UnknownType</code></a> exists to represent a wildcard type on which
 no information can be gathered. In particular, it can assign to everyone,
 is a subtype of everyone (and everyone is a subtype of it).<p>

 If you remove the <a href="../../../../../com/google/javascript/rhino/jstype/UnknownType.html" title="class in com.google.javascript.rhino.jstype"><code>UnknownType</code></a>, the set of types in the type system
 forms a lattice with the <a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isSubtype(com.google.javascript.rhino.jstype.JSType)"><code>isSubtype(com.google.javascript.rhino.jstype.JSType)</code></a> relation defining the partial
 order of types. All types are united at the top of the lattice by the
 <a href="../../../../../com/google/javascript/rhino/jstype/AllType.html" title="class in com.google.javascript.rhino.jstype"><code>AllType</code></a> and at the bottom by the <a href="../../../../../com/google/javascript/rhino/jstype/NoType.html" title="class in com.google.javascript.rhino.jstype"><code>NoType</code></a>.<p></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../serialized-form.html#com.google.javascript.rhino.jstype.JSType">Serialized Form</a></dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested_class_summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a></strong></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#EMPTY_TYPE_COMPONENT">EMPTY_TYPE_COMPONENT</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#ENUMDECL">ENUMDECL</a></strong></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#NOT_A_CLASS">NOT_A_CLASS</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#NOT_A_TYPE">NOT_A_TYPE</a></strong></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#NOT_ENUMDECL">NOT_ENUMDECL</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../com/google/javascript/rhino/jstype/TemplateTypeMap.html" title="class in com.google.javascript.rhino.jstype">TemplateTypeMap</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#templateTypeMap">templateTypeMap</a></strong></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#UNKNOWN_NAME">UNKNOWN_NAME</a></strong></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#autobox()">autobox</a></strong>()</code>
<div class="block">Dereference a type for property access.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#autoboxesTo()">autoboxesTo</a></strong>()</code>
<div class="block">Turn a scalar type to the corresponding object type.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#canBeCalled()">canBeCalled</a></strong>()</code>
<div class="block">This predicate is used to test whether a given type can be used as the
 'function' in a function call.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#canCastTo(com.google.javascript.rhino.jstype.JSType)">canCastTo</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Tests whether values of <code>this</code> type can be safely assigned
 to values of <code>that</code> type.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#canTestForEqualityWith(com.google.javascript.rhino.jstype.JSType)">canTestForEqualityWith</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Tests whether <code>this</code> and <code>that</code> are meaningfully
 comparable.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#canTestForShallowEqualityWith(com.google.javascript.rhino.jstype.JSType)">canTestForShallowEqualityWith</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Tests whether <code>this</code> and <code>that</code> are meaningfully
 comparable using shallow comparison.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#clearResolved()">clearResolved</a></strong>()</code>
<div class="block">Clears the resolved field.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#collapseUnion()">collapseUnion</a></strong>()</code>
<div class="block">Gets the least supertype of this that's not a union.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/ObjectType.html" title="class in com.google.javascript.rhino.jstype">ObjectType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#dereference()">dereference</a></strong>()</code>
<div class="block">Dereference a type for property access.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#differsFrom(com.google.javascript.rhino.jstype.JSType)">differsFrom</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Whether this type is meaningfully different from <code>that</code> type for
 the purposes of data flow analysis.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#equals(java.lang.Object)">equals</a></strong>(java.lang.Object&nbsp;jsType)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#extendTemplateTypeMap(com.google.javascript.rhino.jstype.TemplateTypeMap)">extendTemplateTypeMap</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/TemplateTypeMap.html" title="class in com.google.javascript.rhino.jstype">TemplateTypeMap</a>&nbsp;otherMap)</code>
<div class="block">Extends the template type map associated with this type, merging in the
 keys and values of the specified map.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#findPropertyType(java.lang.String)">findPropertyType</a></strong>(java.lang.String&nbsp;propertyName)</code>
<div class="block">Coerces this type to an Object type, then gets the type of the property
 whose name is given.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#forceResolve(com.google.javascript.rhino.ErrorReporter, com.google.javascript.rhino.jstype.StaticScope)">forceResolve</a></strong>(<a href="../../../../../com/google/javascript/rhino/ErrorReporter.html" title="interface in com.google.javascript.rhino">ErrorReporter</a>&nbsp;t,
            <a href="../../../../../com/google/javascript/rhino/jstype/StaticScope.html" title="interface in com.google.javascript.rhino.jstype">StaticScope</a>&lt;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&gt;&nbsp;scope)</code>
<div class="block">Force this type to resolve, even if the registry is in a lazy
 resolving mode.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getDisplayName()">getDisplayName</a></strong>()</code>
<div class="block">Returns a user meaningful label for the JSType instance.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getGreatestSubtype(com.google.javascript.rhino.jstype.JSType)">getGreatestSubtype</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Gets the greatest subtype of <code>this</code> and <code>that</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/JSDocInfo.html" title="class in com.google.javascript.rhino">JSDocInfo</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getJSDocInfo()">getJSDocInfo</a></strong>()</code>
<div class="block">Gets the docInfo for this type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getLeastSupertype(com.google.javascript.rhino.jstype.JSType)">getLeastSupertype</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Gets the least supertype of <code>this</code> and <code>that</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../com/google/javascript/rhino/jstype/BooleanLiteralSet.html" title="enum in com.google.javascript.rhino.jstype">BooleanLiteralSet</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getPossibleToBooleanOutcomes()">getPossibleToBooleanOutcomes</a></strong>()</code>
<div class="block">Computes the set of possible outcomes of the <code>ToBoolean</code> predicate
 for this type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getRestrictedTypeGivenToBooleanOutcome(boolean)">getRestrictedTypeGivenToBooleanOutcome</a></strong>(boolean&nbsp;outcome)</code>
<div class="block">Computes the restricted type of this type knowing that the
 <code>ToBoolean</code> predicate has a specific value.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/TemplateTypeMap.html" title="class in com.google.javascript.rhino.jstype">TemplateTypeMap</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getTemplateTypeMap()">getTemplateTypeMap</a></strong>()</code>
<div class="block">Returns the template type map associated with this type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getTypesUnderEquality(com.google.javascript.rhino.jstype.JSType)">getTypesUnderEquality</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Computes the subset of <code>this</code> and <code>that</code> types if equality
 is observed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getTypesUnderInequality(com.google.javascript.rhino.jstype.JSType)">getTypesUnderInequality</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Computes the subset of <code>this</code> and <code>that</code> types if inequality
 is observed.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getTypesUnderShallowEquality(com.google.javascript.rhino.jstype.JSType)">getTypesUnderShallowEquality</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Computes the subset of <code>this</code> and <code>that</code> types under shallow
 equality.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getTypesUnderShallowInequality(com.google.javascript.rhino.jstype.JSType)">getTypesUnderShallowInequality</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Computes the subset of <code>this</code> and <code>that</code> types under
 shallow inequality.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#hasAnyTemplateTypes()">hasAnyTemplateTypes</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#hasDisplayName()">hasDisplayName</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#hashCode()">hashCode</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#hasProperty(java.lang.String)">hasProperty</a></strong>(java.lang.String&nbsp;pname)</code>
<div class="block">Checks whether the property is present on the object.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isAllType()">isAllType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isArrayType()">isArrayType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isBooleanObjectType()">isBooleanObjectType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isBooleanValueType()">isBooleanValueType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isCheckedUnknownType()">isCheckedUnknownType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isConstructor()">isConstructor</a></strong>()</code>
<div class="block">Whether this type is a <a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype"><code>FunctionType</code></a> that is a constructor or a
 named type that points to such a type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isDateType()">isDateType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isDict()">isDict</a></strong>()</code>
<div class="block">Returns true iff <code>this</code> can be a <code>dict</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isEmptyType()">isEmptyType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isEnumElementType()">isEnumElementType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isEnumType()">isEnumType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isEquivalent(com.google.javascript.rhino.jstype.JSType, com.google.javascript.rhino.jstype.JSType)">isEquivalent</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;typeA,
            <a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;typeB)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isEquivalentTo(com.google.javascript.rhino.jstype.JSType)">isEquivalentTo</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Checks if two types are equivalent.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isFunctionPrototypeType()">isFunctionPrototypeType</a></strong>()</code>
<div class="block">Whether this is the prototype of a function.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isFunctionType()">isFunctionType</a></strong>()</code>
<div class="block">Returns true if toMaybeFunctionType returns a non-null FunctionType.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isGlobalThisType()">isGlobalThisType</a></strong>()</code>
<div class="block">Returns true if this is a global this type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isInstanceType()">isInstanceType</a></strong>()</code>
<div class="block">Whether this type is an Instance object of some constructor.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isInterface()">isInterface</a></strong>()</code>
<div class="block">Whether this type is a <a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype"><code>FunctionType</code></a> that is an interface or a named
 type that points to such a type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isInvariant(com.google.javascript.rhino.jstype.JSType)">isInvariant</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Checks if two types are invariant.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNominalConstructor()">isNominalConstructor</a></strong>()</code>
<div class="block">Whether this type is the original constructor of a nominal type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNominalType()">isNominalType</a></strong>()</code>
<div class="block">Whether this type is a nominal type (a named instance object or
 a named enum).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNoObjectType()">isNoObjectType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNoResolvedType()">isNoResolvedType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNoType()">isNoType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNullable()">isNullable</a></strong>()</code>
<div class="block">Tests whether this type is nullable.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNullType()">isNullType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNumber()">isNumber</a></strong>()</code>
<div class="block">Tests whether the type is a number (value or Object).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNumberObjectType()">isNumberObjectType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isNumberValueType()">isNumberValueType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isObject()">isObject</a></strong>()</code>
<div class="block">Tests whether this type is an <code>Object</code>, or any subtype thereof.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isOrdinaryFunction()">isOrdinaryFunction</a></strong>()</code>
<div class="block">Whether this type is a <a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype"><code>FunctionType</code></a> that is an ordinary function or
 a named type that points to such a type.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isRecordType()">isRecordType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isRegexpType()">isRegexpType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isResolved()">isResolved</a></strong>()</code>
<div class="block">Whether the type has been resolved.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isString()">isString</a></strong>()</code>
<div class="block">Tests whether the type is a string (value or Object).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isStringObjectType()">isStringObjectType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isStringValueType()">isStringValueType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isStruct()">isStruct</a></strong>()</code>
<div class="block">Returns true iff <code>this</code> can be a <code>struct</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isSubtype(com.google.javascript.rhino.jstype.JSType)">isSubtype</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Checks whether <code>this</code> is a subtype of <code>that</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isTemplateType()">isTemplateType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isTemplatizedType()">isTemplatizedType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isUnionType()">isUnionType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isUnknownType()">isUnknownType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isVoidType()">isVoidType</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#matchConstraint(com.google.javascript.rhino.jstype.JSType)">matchConstraint</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;constraint)</code>
<div class="block">Modify this type so that it matches the specified type.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#matchesInt32Context()">matchesInt32Context</a></strong>()</code>
<div class="block">This predicate is used to test whether a given type can appear in a
 'Int32' context.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#matchesNumberContext()">matchesNumberContext</a></strong>()</code>
<div class="block">This predicate is used to test whether a given type can appear in a
 numeric context, such as an operand of a multiply operator.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#matchesObjectContext()">matchesObjectContext</a></strong>()</code>
<div class="block">This predicate is used to test whether a given type can appear in an
 <code>Object</code> context, such as the expression in a with statement.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#matchesStringContext()">matchesStringContext</a></strong>()</code>
<div class="block">This predicate is used to test whether a given type can appear in a
 <code>String</code> context, such as an operand of a string concat (+) operator.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#matchesUint32Context()">matchesUint32Context</a></strong>()</code>
<div class="block">This predicate is used to test whether a given type can appear in a
 'Uint32' context.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#resolve(com.google.javascript.rhino.ErrorReporter, com.google.javascript.rhino.jstype.StaticScope)">resolve</a></strong>(<a href="../../../../../com/google/javascript/rhino/ErrorReporter.html" title="interface in com.google.javascript.rhino">ErrorReporter</a>&nbsp;t,
       <a href="../../../../../com/google/javascript/rhino/jstype/StaticScope.html" title="interface in com.google.javascript.rhino.jstype">StaticScope</a>&lt;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&gt;&nbsp;scope)</code>
<div class="block">Resolve this type in the given scope.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#restrictByNotNullOrUndefined()">restrictByNotNullOrUndefined</a></strong>()</code>
<div class="block">If this is a union type, returns a union type that does not include
 the null or undefined type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#setValidator(com.google.common.base.Predicate)">setValidator</a></strong>(com.google.common.base.Predicate&lt;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&gt;&nbsp;validator)</code>
<div class="block">Certain types have constraints on them at resolution-time.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/TernaryValue.html" title="enum in com.google.javascript.rhino.jstype">TernaryValue</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#testForEquality(com.google.javascript.rhino.jstype.JSType)">testForEquality</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</code>
<div class="block">Compares <code>this</code> and <code>that</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toAnnotationString()">toAnnotationString</a></strong>()</code>
<div class="block">A string representation of this type, suitable for printing
 in type annotations at code generation time.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toDebugHashCodeString()">toDebugHashCodeString</a></strong>()</code>
<div class="block">A hash code function for diagnosing complicated issues
 around type-identity.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/EnumElementType.html" title="class in com.google.javascript.rhino.jstype">EnumElementType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeEnumElementType()">toMaybeEnumElementType</a></strong>()</code>
<div class="block">Downcasts this to an EnumElementType, or returns null if this is not an EnumElementType.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/EnumType.html" title="class in com.google.javascript.rhino.jstype">EnumType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeEnumType()">toMaybeEnumType</a></strong>()</code>
<div class="block">Downcasts this to an EnumType, or returns null if this is not an EnumType.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype">FunctionType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeFunctionType()">toMaybeFunctionType</a></strong>()</code>
<div class="block">Downcasts this to a FunctionType, or returns null if this is not
 a function.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype">FunctionType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeFunctionType(com.google.javascript.rhino.jstype.JSType)">toMaybeFunctionType</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;type)</code>
<div class="block">Null-safe version of toMaybeFunctionType().</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/TemplateType.html" title="class in com.google.javascript.rhino.jstype">TemplateType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeTemplateType()">toMaybeTemplateType</a></strong>()</code>
<div class="block">Downcasts this to a TemplateType, or returns null if this is not
 a function.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../com/google/javascript/rhino/jstype/TemplateType.html" title="class in com.google.javascript.rhino.jstype">TemplateType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeTemplateType(com.google.javascript.rhino.jstype.JSType)">toMaybeTemplateType</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;type)</code>
<div class="block">Null-safe version of toMaybeTemplateType().</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/TemplatizedType.html" title="class in com.google.javascript.rhino.jstype">TemplatizedType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeTemplatizedType()">toMaybeTemplatizedType</a></strong>()</code>
<div class="block">Downcasts this to a TemplatizedType, or returns null if this is not
 a function.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../com/google/javascript/rhino/jstype/TemplatizedType.html" title="class in com.google.javascript.rhino.jstype">TemplatizedType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeTemplatizedType(com.google.javascript.rhino.jstype.JSType)">toMaybeTemplatizedType</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;type)</code>
<div class="block">Null-safe version of toMaybeTemplatizedType().</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/UnionType.html" title="class in com.google.javascript.rhino.jstype">UnionType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toMaybeUnionType()">toMaybeUnionType</a></strong>()</code>
<div class="block">Downcasts this to a UnionType, or returns null if this is not a UnionType.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/ObjectType.html" title="class in com.google.javascript.rhino.jstype">ObjectType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toObjectType()">toObjectType</a></strong>()</code>
<div class="block">Casts this to an ObjectType, or returns null if this is not an ObjectType.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#toString()">toString</a></strong>()</code>
<div class="block">A string representation of this type, suitable for printing
 in warnings.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#unboxesTo()">unboxesTo</a></strong>()</code>
<div class="block">Turn an object type to its corresponding scalar type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>abstract &lt;T&gt;&nbsp;T</code></td>
<td class="colLast"><code><strong><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#visit(com.google.javascript.rhino.jstype.Visitor)">visit</a></strong>(<a href="../../../../../com/google/javascript/rhino/jstype/Visitor.html" title="interface in com.google.javascript.rhino.jstype">Visitor</a>&lt;T&gt;&nbsp;visitor)</code>
<div class="block">Visit this type with the given visitor.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="templateTypeMap">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>templateTypeMap</h4>
<pre>protected&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/TemplateTypeMap.html" title="class in com.google.javascript.rhino.jstype">TemplateTypeMap</a> templateTypeMap</pre>
</li>
</ul>
<a name="UNKNOWN_NAME">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>UNKNOWN_NAME</h4>
<pre>public static final&nbsp;java.lang.String UNKNOWN_NAME</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#com.google.javascript.rhino.jstype.JSType.UNKNOWN_NAME">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="NOT_A_CLASS">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NOT_A_CLASS</h4>
<pre>public static final&nbsp;java.lang.String NOT_A_CLASS</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#com.google.javascript.rhino.jstype.JSType.NOT_A_CLASS">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="NOT_A_TYPE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NOT_A_TYPE</h4>
<pre>public static final&nbsp;java.lang.String NOT_A_TYPE</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#com.google.javascript.rhino.jstype.JSType.NOT_A_TYPE">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="EMPTY_TYPE_COMPONENT">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EMPTY_TYPE_COMPONENT</h4>
<pre>public static final&nbsp;java.lang.String EMPTY_TYPE_COMPONENT</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#com.google.javascript.rhino.jstype.JSType.EMPTY_TYPE_COMPONENT">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="ENUMDECL">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ENUMDECL</h4>
<pre>public static final&nbsp;int ENUMDECL</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#com.google.javascript.rhino.jstype.JSType.ENUMDECL">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="NOT_ENUMDECL">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>NOT_ENUMDECL</h4>
<pre>public static final&nbsp;int NOT_ENUMDECL</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#com.google.javascript.rhino.jstype.JSType.NOT_ENUMDECL">Constant Field Values</a></dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getJSDocInfo()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJSDocInfo</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/JSDocInfo.html" title="class in com.google.javascript.rhino">JSDocInfo</a>&nbsp;getJSDocInfo()</pre>
<div class="block">Gets the docInfo for this type. By default, documentation cannot be
 attached to arbitrary types. This must be overridden for
 programmer-defined types.</div>
</li>
</ul>
<a name="getDisplayName()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDisplayName</h4>
<pre>public&nbsp;java.lang.String&nbsp;getDisplayName()</pre>
<div class="block">Returns a user meaningful label for the JSType instance.  For example,
 Functions and Enums will return their declaration name (if they have one).
 Some types will not have a meaningful display name.  Calls to
 hasDisplayName() will return true IFF getDisplayName() will return null
 or a zero length string.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the display name of the type, or null if one is not available</dd></dl>
</li>
</ul>
<a name="hasDisplayName()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasDisplayName</h4>
<pre>public&nbsp;boolean&nbsp;hasDisplayName()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if the JSType has a user meaningful label.</dd></dl>
</li>
</ul>
<a name="hasProperty(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasProperty</h4>
<pre>public&nbsp;boolean&nbsp;hasProperty(java.lang.String&nbsp;pname)</pre>
<div class="block">Checks whether the property is present on the object.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>pname</code> - The property name.</dd></dl>
</li>
</ul>
<a name="isNoType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNoType</h4>
<pre>public&nbsp;boolean&nbsp;isNoType()</pre>
</li>
</ul>
<a name="isNoResolvedType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNoResolvedType</h4>
<pre>public&nbsp;boolean&nbsp;isNoResolvedType()</pre>
</li>
</ul>
<a name="isNoObjectType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNoObjectType</h4>
<pre>public&nbsp;boolean&nbsp;isNoObjectType()</pre>
</li>
</ul>
<a name="isEmptyType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEmptyType</h4>
<pre>public final&nbsp;boolean&nbsp;isEmptyType()</pre>
</li>
</ul>
<a name="isNumberObjectType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNumberObjectType</h4>
<pre>public&nbsp;boolean&nbsp;isNumberObjectType()</pre>
</li>
</ul>
<a name="isNumberValueType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNumberValueType</h4>
<pre>public&nbsp;boolean&nbsp;isNumberValueType()</pre>
</li>
</ul>
<a name="isFunctionPrototypeType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFunctionPrototypeType</h4>
<pre>public&nbsp;boolean&nbsp;isFunctionPrototypeType()</pre>
<div class="block">Whether this is the prototype of a function.</div>
</li>
</ul>
<a name="isStringObjectType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isStringObjectType</h4>
<pre>public&nbsp;boolean&nbsp;isStringObjectType()</pre>
</li>
</ul>
<a name="isStringValueType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isStringValueType</h4>
<pre>public&nbsp;boolean&nbsp;isStringValueType()</pre>
</li>
</ul>
<a name="isString()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isString</h4>
<pre>public final&nbsp;boolean&nbsp;isString()</pre>
<div class="block">Tests whether the type is a string (value or Object).</div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code>this &amp;lt;: (String, string)</code></dd></dl>
</li>
</ul>
<a name="isNumber()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNumber</h4>
<pre>public final&nbsp;boolean&nbsp;isNumber()</pre>
<div class="block">Tests whether the type is a number (value or Object).</div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code>this &amp;lt;: (Number, number)</code></dd></dl>
</li>
</ul>
<a name="isArrayType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isArrayType</h4>
<pre>public&nbsp;boolean&nbsp;isArrayType()</pre>
</li>
</ul>
<a name="isBooleanObjectType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isBooleanObjectType</h4>
<pre>public&nbsp;boolean&nbsp;isBooleanObjectType()</pre>
</li>
</ul>
<a name="isBooleanValueType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isBooleanValueType</h4>
<pre>public&nbsp;boolean&nbsp;isBooleanValueType()</pre>
</li>
</ul>
<a name="isRegexpType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRegexpType</h4>
<pre>public&nbsp;boolean&nbsp;isRegexpType()</pre>
</li>
</ul>
<a name="isDateType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDateType</h4>
<pre>public&nbsp;boolean&nbsp;isDateType()</pre>
</li>
</ul>
<a name="isNullType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNullType</h4>
<pre>public&nbsp;boolean&nbsp;isNullType()</pre>
</li>
</ul>
<a name="isVoidType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isVoidType</h4>
<pre>public&nbsp;boolean&nbsp;isVoidType()</pre>
</li>
</ul>
<a name="isAllType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAllType</h4>
<pre>public&nbsp;boolean&nbsp;isAllType()</pre>
</li>
</ul>
<a name="isUnknownType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isUnknownType</h4>
<pre>public&nbsp;boolean&nbsp;isUnknownType()</pre>
</li>
</ul>
<a name="isCheckedUnknownType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCheckedUnknownType</h4>
<pre>public&nbsp;boolean&nbsp;isCheckedUnknownType()</pre>
</li>
</ul>
<a name="isUnionType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isUnionType</h4>
<pre>public final&nbsp;boolean&nbsp;isUnionType()</pre>
</li>
</ul>
<a name="isStruct()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isStruct</h4>
<pre>public&nbsp;boolean&nbsp;isStruct()</pre>
<div class="block">Returns true iff <code>this</code> can be a <code>struct</code>.
 UnionType overrides the method, assume <code>this</code> is not a union here.</div>
</li>
</ul>
<a name="isDict()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDict</h4>
<pre>public&nbsp;boolean&nbsp;isDict()</pre>
<div class="block">Returns true iff <code>this</code> can be a <code>dict</code>.
 UnionType overrides the method, assume <code>this</code> is not a union here.</div>
</li>
</ul>
<a name="toMaybeUnionType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeUnionType</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/UnionType.html" title="class in com.google.javascript.rhino.jstype">UnionType</a>&nbsp;toMaybeUnionType()</pre>
<div class="block">Downcasts this to a UnionType, or returns null if this is not a UnionType.

 Named in honor of Haskell's Maybe type constructor.</div>
</li>
</ul>
<a name="isGlobalThisType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isGlobalThisType</h4>
<pre>public final&nbsp;boolean&nbsp;isGlobalThisType()</pre>
<div class="block">Returns true if this is a global this type.</div>
</li>
</ul>
<a name="isFunctionType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFunctionType</h4>
<pre>public final&nbsp;boolean&nbsp;isFunctionType()</pre>
<div class="block">Returns true if toMaybeFunctionType returns a non-null FunctionType.</div>
</li>
</ul>
<a name="toMaybeFunctionType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeFunctionType</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype">FunctionType</a>&nbsp;toMaybeFunctionType()</pre>
<div class="block">Downcasts this to a FunctionType, or returns null if this is not
 a function.

 For the purposes of this function, we define a MaybeFunctionType as any
 type in the sub-lattice
 { x | LEAST_FUNCTION_TYPE <= x <= GREATEST_FUNCTION_TYPE }
 This definition excludes bottom types like NoType and NoObjectType.

 This definition is somewhat arbitrary and axiomatic, but this is the
 definition that makes the most sense for the most callers.</div>
</li>
</ul>
<a name="toMaybeFunctionType(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeFunctionType</h4>
<pre>public static&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype">FunctionType</a>&nbsp;toMaybeFunctionType(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;type)</pre>
<div class="block">Null-safe version of toMaybeFunctionType().</div>
</li>
</ul>
<a name="isEnumElementType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEnumElementType</h4>
<pre>public final&nbsp;boolean&nbsp;isEnumElementType()</pre>
</li>
</ul>
<a name="toMaybeEnumElementType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeEnumElementType</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/EnumElementType.html" title="class in com.google.javascript.rhino.jstype">EnumElementType</a>&nbsp;toMaybeEnumElementType()</pre>
<div class="block">Downcasts this to an EnumElementType, or returns null if this is not an EnumElementType.</div>
</li>
</ul>
<a name="isEnumType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEnumType</h4>
<pre>public&nbsp;boolean&nbsp;isEnumType()</pre>
</li>
</ul>
<a name="toMaybeEnumType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeEnumType</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/EnumType.html" title="class in com.google.javascript.rhino.jstype">EnumType</a>&nbsp;toMaybeEnumType()</pre>
<div class="block">Downcasts this to an EnumType, or returns null if this is not an EnumType.</div>
</li>
</ul>
<a name="isRecordType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRecordType</h4>
<pre>public&nbsp;boolean&nbsp;isRecordType()</pre>
</li>
</ul>
<a name="isTemplatizedType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isTemplatizedType</h4>
<pre>public final&nbsp;boolean&nbsp;isTemplatizedType()</pre>
</li>
</ul>
<a name="toMaybeTemplatizedType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeTemplatizedType</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/TemplatizedType.html" title="class in com.google.javascript.rhino.jstype">TemplatizedType</a>&nbsp;toMaybeTemplatizedType()</pre>
<div class="block">Downcasts this to a TemplatizedType, or returns null if this is not
 a function.</div>
</li>
</ul>
<a name="toMaybeTemplatizedType(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeTemplatizedType</h4>
<pre>public static&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/TemplatizedType.html" title="class in com.google.javascript.rhino.jstype">TemplatizedType</a>&nbsp;toMaybeTemplatizedType(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;type)</pre>
<div class="block">Null-safe version of toMaybeTemplatizedType().</div>
</li>
</ul>
<a name="isTemplateType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isTemplateType</h4>
<pre>public final&nbsp;boolean&nbsp;isTemplateType()</pre>
</li>
</ul>
<a name="toMaybeTemplateType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeTemplateType</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/TemplateType.html" title="class in com.google.javascript.rhino.jstype">TemplateType</a>&nbsp;toMaybeTemplateType()</pre>
<div class="block">Downcasts this to a TemplateType, or returns null if this is not
 a function.</div>
</li>
</ul>
<a name="toMaybeTemplateType(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toMaybeTemplateType</h4>
<pre>public static&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/TemplateType.html" title="class in com.google.javascript.rhino.jstype">TemplateType</a>&nbsp;toMaybeTemplateType(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;type)</pre>
<div class="block">Null-safe version of toMaybeTemplateType().</div>
</li>
</ul>
<a name="hasAnyTemplateTypes()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasAnyTemplateTypes</h4>
<pre>public&nbsp;boolean&nbsp;hasAnyTemplateTypes()</pre>
</li>
</ul>
<a name="getTemplateTypeMap()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateTypeMap</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/TemplateTypeMap.html" title="class in com.google.javascript.rhino.jstype">TemplateTypeMap</a>&nbsp;getTemplateTypeMap()</pre>
<div class="block">Returns the template type map associated with this type.</div>
</li>
</ul>
<a name="extendTemplateTypeMap(com.google.javascript.rhino.jstype.TemplateTypeMap)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extendTemplateTypeMap</h4>
<pre>public&nbsp;void&nbsp;extendTemplateTypeMap(<a href="../../../../../com/google/javascript/rhino/jstype/TemplateTypeMap.html" title="class in com.google.javascript.rhino.jstype">TemplateTypeMap</a>&nbsp;otherMap)</pre>
<div class="block">Extends the template type map associated with this type, merging in the
 keys and values of the specified map.</div>
</li>
</ul>
<a name="isObject()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isObject</h4>
<pre>public&nbsp;boolean&nbsp;isObject()</pre>
<div class="block">Tests whether this type is an <code>Object</code>, or any subtype thereof.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code>this &amp;lt;: Object</code></dd></dl>
</li>
</ul>
<a name="isConstructor()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isConstructor</h4>
<pre>public&nbsp;boolean&nbsp;isConstructor()</pre>
<div class="block">Whether this type is a <a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype"><code>FunctionType</code></a> that is a constructor or a
 named type that points to such a type.</div>
</li>
</ul>
<a name="isNominalType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNominalType</h4>
<pre>public&nbsp;boolean&nbsp;isNominalType()</pre>
<div class="block">Whether this type is a nominal type (a named instance object or
 a named enum).</div>
</li>
</ul>
<a name="isNominalConstructor()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNominalConstructor</h4>
<pre>public final&nbsp;boolean&nbsp;isNominalConstructor()</pre>
<div class="block">Whether this type is the original constructor of a nominal type.
 Does not include structural constructors.</div>
</li>
</ul>
<a name="isInstanceType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isInstanceType</h4>
<pre>public&nbsp;boolean&nbsp;isInstanceType()</pre>
<div class="block">Whether this type is an Instance object of some constructor.
 Does not necessarily mean this is an <code>InstanceObjectType</code>.</div>
</li>
</ul>
<a name="isInterface()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isInterface</h4>
<pre>public&nbsp;boolean&nbsp;isInterface()</pre>
<div class="block">Whether this type is a <a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype"><code>FunctionType</code></a> that is an interface or a named
 type that points to such a type.</div>
</li>
</ul>
<a name="isOrdinaryFunction()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isOrdinaryFunction</h4>
<pre>public&nbsp;boolean&nbsp;isOrdinaryFunction()</pre>
<div class="block">Whether this type is a <a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype"><code>FunctionType</code></a> that is an ordinary function or
 a named type that points to such a type.</div>
</li>
</ul>
<a name="isEquivalentTo(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEquivalentTo</h4>
<pre>public final&nbsp;boolean&nbsp;isEquivalentTo(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Checks if two types are equivalent.</div>
</li>
</ul>
<a name="isInvariant(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isInvariant</h4>
<pre>public final&nbsp;boolean&nbsp;isInvariant(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Checks if two types are invariant.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><code>EquivalenceMethod</code></dd></dl>
</li>
</ul>
<a name="differsFrom(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differsFrom</h4>
<pre>public final&nbsp;boolean&nbsp;differsFrom(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Whether this type is meaningfully different from <code>that</code> type for
 the purposes of data flow analysis.

 This is a trickier check than pure equality, because it has to properly
 handle unknown types. See <code>EquivalenceMethod</code> for more info.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="http://www.youtube.com/watch?v=_RpSv3HjpEw">Unknown unknowns</a></dd></dl>
</li>
</ul>
<a name="isEquivalent(com.google.javascript.rhino.jstype.JSType, com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEquivalent</h4>
<pre>public static&nbsp;boolean&nbsp;isEquivalent(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;typeA,
                   <a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;typeB)</pre>
</li>
</ul>
<a name="equals(java.lang.Object)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(java.lang.Object&nbsp;jsType)</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code>equals</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="hashCode()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>public&nbsp;int&nbsp;hashCode()</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code>hashCode</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="matchesInt32Context()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>matchesInt32Context</h4>
<pre>public final&nbsp;boolean&nbsp;matchesInt32Context()</pre>
<div class="block">This predicate is used to test whether a given type can appear in a
 'Int32' context.  This context includes, for example, the operands of a
 bitwise or operator.  Since we do not currently support integer types,
 this is a synonym for <code>Number</code>.</div>
</li>
</ul>
<a name="matchesUint32Context()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>matchesUint32Context</h4>
<pre>public final&nbsp;boolean&nbsp;matchesUint32Context()</pre>
<div class="block">This predicate is used to test whether a given type can appear in a
 'Uint32' context.  This context includes the right-hand operand of a shift
 operator.</div>
</li>
</ul>
<a name="matchesNumberContext()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>matchesNumberContext</h4>
<pre>public&nbsp;boolean&nbsp;matchesNumberContext()</pre>
<div class="block">This predicate is used to test whether a given type can appear in a
 numeric context, such as an operand of a multiply operator.</div>
</li>
</ul>
<a name="matchesStringContext()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>matchesStringContext</h4>
<pre>public&nbsp;boolean&nbsp;matchesStringContext()</pre>
<div class="block">This predicate is used to test whether a given type can appear in a
 <code>String</code> context, such as an operand of a string concat (+) operator.

 All types have at least the potential for converting to <code>String</code>.
 When we add externally defined types, such as a browser OM, we may choose
 to add types that do not automatically convert to <code>String</code>.</div>
</li>
</ul>
<a name="matchesObjectContext()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>matchesObjectContext</h4>
<pre>public&nbsp;boolean&nbsp;matchesObjectContext()</pre>
<div class="block">This predicate is used to test whether a given type can appear in an
 <code>Object</code> context, such as the expression in a with statement.

 Most types we will encounter, except notably <code>null</code>, have at least
 the potential for converting to <code>Object</code>.  Host defined objects can
 get peculiar.</div>
</li>
</ul>
<a name="findPropertyType(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findPropertyType</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;findPropertyType(java.lang.String&nbsp;propertyName)</pre>
<div class="block">Coerces this type to an Object type, then gets the type of the property
 whose name is given.

 Unlike <a href="../../../../../com/google/javascript/rhino/jstype/ObjectType.html#getPropertyType(java.lang.String)"><code>ObjectType.getPropertyType(java.lang.String)</code></a>, returns null if the property
 is not found.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>The property's type. <code>null</code> if the current type cannot
     have properties, or if the type is not found.</dd></dl>
</li>
</ul>
<a name="canBeCalled()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canBeCalled</h4>
<pre>public&nbsp;boolean&nbsp;canBeCalled()</pre>
<div class="block">This predicate is used to test whether a given type can be used as the
 'function' in a function call.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code>true</code> if this type might be callable.</dd></dl>
</li>
</ul>
<a name="canCastTo(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canCastTo</h4>
<pre>public&nbsp;boolean&nbsp;canCastTo(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Tests whether values of <code>this</code> type can be safely assigned
 to values of <code>that</code> type.<p>

 The default implementation verifies that <code>this</code> is a subtype
 of <code>that</code>.<p></div>
</li>
</ul>
<a name="autoboxesTo()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>autoboxesTo</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;autoboxesTo()</pre>
<div class="block">Turn a scalar type to the corresponding object type.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the auto-boxed type or <code>null</code> if this type is not a scalar.</dd></dl>
</li>
</ul>
<a name="unboxesTo()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unboxesTo</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;unboxesTo()</pre>
<div class="block">Turn an object type to its corresponding scalar type.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the unboxed type or <code>null</code> if this type does not unbox.</dd></dl>
</li>
</ul>
<a name="toObjectType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toObjectType</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/ObjectType.html" title="class in com.google.javascript.rhino.jstype">ObjectType</a>&nbsp;toObjectType()</pre>
<div class="block">Casts this to an ObjectType, or returns null if this is not an ObjectType.
 If this is a scalar type, it will *not* be converted to an object type.
 If you want to simulate JS autoboxing or dereferencing, you should use
 autoboxesTo() or dereference().</div>
</li>
</ul>
<a name="autobox()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>autobox</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;autobox()</pre>
<div class="block">Dereference a type for property access.

 Filters null/undefined and autoboxes the resulting type.
 Never returns null.</div>
</li>
</ul>
<a name="dereference()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dereference</h4>
<pre>public final&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/ObjectType.html" title="class in com.google.javascript.rhino.jstype">ObjectType</a>&nbsp;dereference()</pre>
<div class="block">Dereference a type for property access.

 Filters null/undefined, autoboxes the resulting type, and returns it
 iff it's an object.</div>
</li>
</ul>
<a name="canTestForEqualityWith(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canTestForEqualityWith</h4>
<pre>public final&nbsp;boolean&nbsp;canTestForEqualityWith(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Tests whether <code>this</code> and <code>that</code> are meaningfully
 comparable. By meaningfully, we mean compatible types that do not lead
 to step 22 of the definition of the Abstract Equality Comparison
 Algorithm (11.9.3, page 55&ndash;56) of the ECMA-262 specification.<p></div>
</li>
</ul>
<a name="testForEquality(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testForEquality</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/TernaryValue.html" title="enum in com.google.javascript.rhino.jstype">TernaryValue</a>&nbsp;testForEquality(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Compares <code>this</code> and <code>that</code>.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd><ul>
 <li><a href="../../../../../com/google/javascript/rhino/jstype/TernaryValue.html#TRUE"><code>TernaryValue.TRUE</code></a> if the comparison of values of
   <code>this</code> type and <code>that</code> always succeed (such as
   <code>undefined</code> compared to <code>null</code>)</li>
 <li><a href="../../../../../com/google/javascript/rhino/jstype/TernaryValue.html#FALSE"><code>TernaryValue.FALSE</code></a> if the comparison of values of
   <code>this</code> type and <code>that</code> always fails (such as
   <code>undefined</code> compared to <code>number</code>)</li>
 <li><a href="../../../../../com/google/javascript/rhino/jstype/TernaryValue.html#UNKNOWN"><code>TernaryValue.UNKNOWN</code></a> if the comparison can succeed or
   fail depending on the concrete values</li>
 </ul></dd></dl>
</li>
</ul>
<a name="canTestForShallowEqualityWith(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canTestForShallowEqualityWith</h4>
<pre>public final&nbsp;boolean&nbsp;canTestForShallowEqualityWith(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Tests whether <code>this</code> and <code>that</code> are meaningfully
 comparable using shallow comparison. By meaningfully, we mean compatible
 types that are not rejected by step 1 of the definition of the Strict
 Equality Comparison Algorithm (11.9.6, page 56&ndash;57) of the
 ECMA-262 specification.<p></div>
</li>
</ul>
<a name="isNullable()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNullable</h4>
<pre>public&nbsp;boolean&nbsp;isNullable()</pre>
<div class="block">Tests whether this type is nullable.</div>
</li>
</ul>
<a name="collapseUnion()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>collapseUnion</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;collapseUnion()</pre>
<div class="block">Gets the least supertype of this that's not a union.</div>
</li>
</ul>
<a name="getLeastSupertype(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLeastSupertype</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;getLeastSupertype(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Gets the least supertype of <code>this</code> and <code>that</code>.
 The least supertype is the join (&#8744;) or supremum of both types in the
 type lattice.<p>
 Examples:
 <ul>
 <li><code>number &amp;#8744; *</code> = <code>*</code></li>
 <li><code>number &amp;#8744; Object</code> = <code>(number, Object)</code></li>
 <li><code>Number &amp;#8744; Object</code> = <code>Object</code></li>
 </ul></div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code>this &amp;#8744; that</code></dd></dl>
</li>
</ul>
<a name="getGreatestSubtype(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGreatestSubtype</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;getGreatestSubtype(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Gets the greatest subtype of <code>this</code> and <code>that</code>.
 The greatest subtype is the meet (&#8743;) or infimum of both types in the
 type lattice.<p>
 Examples
 <ul>
 <li><code>Number &amp;#8743; Any</code> = <code>Any</code></li>
 <li><code>number &amp;#8743; Object</code> = <code>Any</code></li>
 <li><code>Number &amp;#8743; Object</code> = <code>Number</code></li>
 </ul></div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code>this &amp;#8744; that</code></dd></dl>
</li>
</ul>
<a name="getRestrictedTypeGivenToBooleanOutcome(boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRestrictedTypeGivenToBooleanOutcome</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;getRestrictedTypeGivenToBooleanOutcome(boolean&nbsp;outcome)</pre>
<div class="block">Computes the restricted type of this type knowing that the
 <code>ToBoolean</code> predicate has a specific value. For more information
 about the <code>ToBoolean</code> predicate, see
 <a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#getPossibleToBooleanOutcomes()"><code>getPossibleToBooleanOutcomes()</code></a>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>outcome</code> - the value of the <code>ToBoolean</code> predicate</dd>
<dt><span class="strong">Returns:</span></dt><dd>the restricted type, or the Any Type if the underlying type could
         not have yielded this ToBoolean value

 TODO(user): Move this method to the SemanticRAI and use the visit
 method of types to get the restricted type.</dd></dl>
</li>
</ul>
<a name="getPossibleToBooleanOutcomes()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPossibleToBooleanOutcomes</h4>
<pre>public abstract&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/BooleanLiteralSet.html" title="enum in com.google.javascript.rhino.jstype">BooleanLiteralSet</a>&nbsp;getPossibleToBooleanOutcomes()</pre>
<div class="block">Computes the set of possible outcomes of the <code>ToBoolean</code> predicate
 for this type. The <code>ToBoolean</code> predicate is defined by the ECMA-262
 standard, 3<sup>rd</sup> edition. Its behavior for simple types can be
 summarized by the following table:
 <table>
 <tr><th>type</th><th>result</th></tr>
 <tr><td><code>undefined</code></td><td>{false}</td></tr>
 <tr><td><code>null</code></td><td>{false}</td></tr>
 <tr><td><code>boolean</code></td><td>{true, false}</td></tr>
 <tr><td><code>number</code></td><td>{true, false}</td></tr>
 <tr><td><code>string</code></td><td>{true, false}</td></tr>
 <tr><td><code>Object</code></td><td>{true}</td></tr>
 </table></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the set of boolean literals for this type</dd></dl>
</li>
</ul>
<a name="getTypesUnderEquality(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypesUnderEquality</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a>&nbsp;getTypesUnderEquality(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Computes the subset of <code>this</code> and <code>that</code> types if equality
 is observed. If a value <code>v1</code> of type <code>null</code> is equal to a value
 <code>v2</code> of type <code>(undefined,number)</code>, we can infer that the
 type of <code>v1</code> is <code>null</code> and the type of <code>v2</code> is
 <code>undefined</code>.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a pair containing the restricted type of <code>this</code> as the first
         component and the restricted type of <code>that</code> as the second
         element. The returned pair is never <code>null</code> even though its
         components may be <code>null</code></dd></dl>
</li>
</ul>
<a name="getTypesUnderInequality(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypesUnderInequality</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a>&nbsp;getTypesUnderInequality(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Computes the subset of <code>this</code> and <code>that</code> types if inequality
 is observed. If a value <code>v1</code> of type <code>number</code> is not equal to a
 value <code>v2</code> of type <code>(undefined,number)</code>, we can infer that the
 type of <code>v1</code> is <code>number</code> and the type of <code>v2</code> is
 <code>number</code> as well.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a pair containing the restricted type of <code>this</code> as the first
         component and the restricted type of <code>that</code> as the second
         element. The returned pair is never <code>null</code> even though its
         components may be <code>null</code></dd></dl>
</li>
</ul>
<a name="getTypesUnderShallowEquality(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypesUnderShallowEquality</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a>&nbsp;getTypesUnderShallowEquality(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Computes the subset of <code>this</code> and <code>that</code> types under shallow
 equality.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a pair containing the restricted type of <code>this</code> as the first
         component and the restricted type of <code>that</code> as the second
         element. The returned pair is never <code>null</code> even though its
         components may be <code>null</code>.</dd></dl>
</li>
</ul>
<a name="getTypesUnderShallowInequality(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypesUnderShallowInequality</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype">JSType.TypePair</a>&nbsp;getTypesUnderShallowInequality(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Computes the subset of <code>this</code> and <code>that</code> types under
 shallow inequality.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>A pair containing the restricted type of <code>this</code> as the first
         component and the restricted type of <code>that</code> as the second
         element. The returned pair is never <code>null</code> even though its
         components may be <code>null</code></dd></dl>
</li>
</ul>
<a name="restrictByNotNullOrUndefined()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>restrictByNotNullOrUndefined</h4>
<pre>public&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;restrictByNotNullOrUndefined()</pre>
<div class="block">If this is a union type, returns a union type that does not include
 the null or undefined type.</div>
</li>
</ul>
<a name="isSubtype(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSubtype</h4>
<pre>public&nbsp;boolean&nbsp;isSubtype(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;that)</pre>
<div class="block">Checks whether <code>this</code> is a subtype of <code>that</code>.<p>

 Subtyping rules:
 <ul>
 <li>(unknown) &mdash; every type is a subtype of the Unknown type.</li>
 <li>(no) &mdash; the No type is a subtype of every type.</li>
 <li>(no-object) &mdash; the NoObject type is a subtype of every object
 type (i.e. subtypes of the Object type).</li>
 <li>(ref) &mdash; a type is a subtype of itself.</li>
 <li>(union-l) &mdash; A union type is a subtype of a type U if all the
 union type's constituents are a subtype of U. Formally<br>
 <code>(T&lt;sub&gt;1&lt;/sub&gt;, &amp;hellip;, T&lt;sub&gt;n&lt;/sub&gt;) &amp;lt;: U</code> if and only
 <code>T&lt;sub&gt;k&lt;/sub&gt; &amp;lt;: U</code> for all <code>k &amp;isin; 1..n</code>.</li>
 <li>(union-r) &mdash; A type U is a subtype of a union type if it is a
 subtype of one of the union type's constituents. Formally<br>
 <code>U &amp;lt;: (T&lt;sub&gt;1&lt;/sub&gt;, &amp;hellip;, T&lt;sub&gt;n&lt;/sub&gt;)</code> if and only
 if <code>U &amp;lt;: T&lt;sub&gt;k&lt;/sub&gt;</code> for some index <code>k</code>.</li>
 <li>(objects) &mdash; an Object <code>O&lt;sub&gt;1&lt;/sub&gt;</code> is a subtype
 of an object <code>O&lt;sub&gt;2&lt;/sub&gt;</code> if it has more properties
 than <code>O&lt;sub&gt;2&lt;/sub&gt;</code> and all common properties are
 pairwise subtypes.</li>
 </ul></div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code>this &amp;lt;: that</code></dd></dl>
</li>
</ul>
<a name="visit(com.google.javascript.rhino.jstype.Visitor)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>visit</h4>
<pre>public abstract&nbsp;&lt;T&gt;&nbsp;T&nbsp;visit(<a href="../../../../../com/google/javascript/rhino/jstype/Visitor.html" title="interface in com.google.javascript.rhino.jstype">Visitor</a>&lt;T&gt;&nbsp;visitor)</pre>
<div class="block">Visit this type with the given visitor.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the value returned by the visitor</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../com/google/javascript/rhino/jstype/Visitor.html" title="interface in com.google.javascript.rhino.jstype"><code>Visitor</code></a></dd></dl>
</li>
</ul>
<a name="forceResolve(com.google.javascript.rhino.ErrorReporter, com.google.javascript.rhino.jstype.StaticScope)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>forceResolve</h4>
<pre>public final&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;forceResolve(<a href="../../../../../com/google/javascript/rhino/ErrorReporter.html" title="interface in com.google.javascript.rhino">ErrorReporter</a>&nbsp;t,
                  <a href="../../../../../com/google/javascript/rhino/jstype/StaticScope.html" title="interface in com.google.javascript.rhino.jstype">StaticScope</a>&lt;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&gt;&nbsp;scope)</pre>
<div class="block">Force this type to resolve, even if the registry is in a lazy
 resolving mode.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#resolve(com.google.javascript.rhino.ErrorReporter, com.google.javascript.rhino.jstype.StaticScope)"><code>resolve(com.google.javascript.rhino.ErrorReporter, com.google.javascript.rhino.jstype.StaticScope&lt;com.google.javascript.rhino.jstype.JSType&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="resolve(com.google.javascript.rhino.ErrorReporter, com.google.javascript.rhino.jstype.StaticScope)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolve</h4>
<pre>public final&nbsp;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;resolve(<a href="../../../../../com/google/javascript/rhino/ErrorReporter.html" title="interface in com.google.javascript.rhino">ErrorReporter</a>&nbsp;t,
             <a href="../../../../../com/google/javascript/rhino/jstype/StaticScope.html" title="interface in com.google.javascript.rhino.jstype">StaticScope</a>&lt;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&gt;&nbsp;scope)</pre>
<div class="block">Resolve this type in the given scope.

 The returned value must be equal to <code>this</code>, as defined by
 <a href="../../../../../com/google/javascript/rhino/jstype/JSType.html#isEquivalentTo(com.google.javascript.rhino.jstype.JSType)"><code>isEquivalentTo(com.google.javascript.rhino.jstype.JSType)</code></a>. It may or may not be the same object. This method
 may modify the internal state of <code>this</code>, as long as it does
 so in a way that preserves Object equality.

 For efficiency, we should only resolve a type once per compilation job.
 For incremental compilations, one compilation job may need the
 artifacts from a previous generation, so we will eventually need
 a generational flag instead of a boolean one.</div>
</li>
</ul>
<a name="isResolved()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isResolved</h4>
<pre>public final&nbsp;boolean&nbsp;isResolved()</pre>
<div class="block">Whether the type has been resolved.</div>
</li>
</ul>
<a name="clearResolved()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clearResolved</h4>
<pre>public final&nbsp;void&nbsp;clearResolved()</pre>
<div class="block">Clears the resolved field.</div>
</li>
</ul>
<a name="setValidator(com.google.common.base.Predicate)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setValidator</h4>
<pre>public&nbsp;boolean&nbsp;setValidator(com.google.common.base.Predicate&lt;<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&gt;&nbsp;validator)</pre>
<div class="block">Certain types have constraints on them at resolution-time.
 For example, a type in an <code>@extends</code> annotation must be an
 object. Clients should inject a validator that emits a warning
 if the type does not validate, and return false.</div>
</li>
</ul>
<a name="toString()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;java.lang.String&nbsp;toString()</pre>
<div class="block">A string representation of this type, suitable for printing
 in warnings.</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="toDebugHashCodeString()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toDebugHashCodeString</h4>
<pre>public&nbsp;java.lang.String&nbsp;toDebugHashCodeString()</pre>
<div class="block">A hash code function for diagnosing complicated issues
 around type-identity.</div>
</li>
</ul>
<a name="toAnnotationString()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toAnnotationString</h4>
<pre>public final&nbsp;java.lang.String&nbsp;toAnnotationString()</pre>
<div class="block">A string representation of this type, suitable for printing
 in type annotations at code generation time.</div>
</li>
</ul>
<a name="matchConstraint(com.google.javascript.rhino.jstype.JSType)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>matchConstraint</h4>
<pre>public&nbsp;void&nbsp;matchConstraint(<a href="../../../../../com/google/javascript/rhino/jstype/JSType.html" title="class in com.google.javascript.rhino.jstype">JSType</a>&nbsp;constraint)</pre>
<div class="block">Modify this type so that it matches the specified type.

 This is useful for reverse type-inference, where we want to
 infer that an object literal matches its constraint (much like
 how the java compiler does reverse-inference to figure out generics).</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>constraint</code> - </dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../com/google/javascript/rhino/jstype/FunctionType.html" title="class in com.google.javascript.rhino.jstype"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../com/google/javascript/rhino/jstype/JSType.TypePair.html" title="class in com.google.javascript.rhino.jstype"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?com/google/javascript/rhino/jstype/JSType.html" target="_top">Frames</a></li>
<li><a href="JSType.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
